import { getFileUrlByKey, initSystemConfig } from '@jecloud/utils';
import { GLOBAL_SETTINGS_TOKENKEY } from './constant';
import { useGlobalStore } from '../store/global-store';
import { useWebSocketStore } from '../store/websocket-store';
import { setAjaxDefaultConfig } from './http';
import { initThirdLogin } from '../components/app-third-login/helper';
/**
 * 初始化系统数据
 * @param {Object} options
 * @param {Boolean} options.goHome 跳转首页，微信使用
 * @returns
 */
export function initSystem(options) {
  const store = useGlobalStore();
  return initSystemConfig() // 加载系统变量
    .then(setSystemConfig) // 设置系统配置
    .then(initThirdLogin)
    .then(store.validateToken) // 校验token
    .then(() => {
      store.login(options);
    })
    .catch((error) => {
      if (error?.code !== 'third-login') {
        store.logout();
      }
    });
}

/**
 * 设置系统初始配置项
 * @param {*} config
 */
export function setSystemConfig(config = {}) {
  // 设置ajax配置
  setAjaxDefaultConfig(config);
  // 安装websocket
  useWebSocketStore().setupWebSocket();
  // 初始化主题
  useGlobalStore().initTheme(config);
  // 设置登录页配置...
  return Promise.resolve();
}

/**
 * 获取服务文件地址，携带token参数
 * @param {*} key
 * @param {*} type
 * @returns
 */
export function getFileUrlByKey4Token(key, type) {
  const token = useGlobalStore().getToken();
  return key ? `${getFileUrlByKey(key, type)}?${GLOBAL_SETTINGS_TOKENKEY}=${token}` : '';
}

export function login(options) {
  useGlobalStore().login(options);
}
export function logout() {
  useGlobalStore().logout();
}
export function isLogin() {
  return !!useGlobalStore().getToken();
}
